﻿using System;
using System.ServiceModel;
using Domain.Dummies.Dtos.Collections;
using Domain.Dummies.Dtos;

namespace KernelWorkflow
{
    [ServiceContract]
    public interface IMainWorkflow
    {
        [OperationContract]
        SessionDto AutorizateMe(string userName, string password);

        [OperationContract]
        Boolean CheckRightsForMe(SessionDto session, string accessObject);

        [OperationContract]
        StudentsWithGroupsDto GetStudentsWithGroups(SessionDto session);

        [OperationContract]
        ExamsListFullDataDto GetExamsByStudent(SessionDto session, Guid studentId);

        [OperationContract]
        TeacherWeekFullDataScheduleDto GetTeacherWeekSchedule(SessionDto session, Guid TeacherGuid, DateTime Day_In_Week);

        [OperationContract]
        TeacherDayFullDataScheduleDto GetTeacherDaySchedule(SessionDto session, Guid TeacherGuid, DateTime Day);

        [OperationContract]
        BooksBaseListDto SearchBook(SessionDto session, BookDto book);

        [OperationContract]
        BooksWithPersonListDto GetListOfBookWhichPersonGetInLibrary(SessionDto session, Guid PersonGuid);

        
        /*
        [OperationContract]
        StudentWeekFullDataScheduleDto GetStudentWeekSchedule(SessionDto session, Guid StudentGuid, DateTime Day_In_Week);
         
        [OperationContract]
        StudentDayFullDataScheduleDto GetStudentDaySchedule(SessionDto session, Guid StudentGuid, DateTime Day);

        [OperationContract]
        Guid CreateStudentProxy(SessionDto session, StudentDto student);

        [OperationContract]
        bool DeleteStudentProxy(SessionDto session, Guid studentId);

        [OperationContract]
        Guid CreateTeacherProxy(SessionDto session, TeacherDto teacher);

        [OperationContract]
        bool DeleteTeacherProxy(SessionDto session, Guid teacherId);

        [OperationContract]
        Guid CreateGroupProxy(SessionDto session, GroupBaseDto group);

        [OperationContract]
        bool RemoveGroupProxy(SessionDto session, Guid groupId);       

        [OperationContract]
        Guid CreateExamProxy(SessionDto session, ExamDto exam);

        [OperationContract]
        bool PassExamProxy(SessionDto session, Guid examId, Guid studentId, int mark, string comments);

        [OperationContract]
        PersonListGuidsDto GetStudentsProxy(SessionDto session);

        [OperationContract]
        PersonListGuidsDto GetTeachersProxy(SessionDto session);

        [OperationContract]
        StudentDto GetStudentProxy(SessionDto session, Guid studentId);

        [OperationContract]
        TeacherDto GetTeacherProxy(SessionDto session, Guid teacherId);
        */
    }
}
